The programming or erasure of a floating gate memory cell, in current practice, is done by applying different voltage pulses to the different nodes of the transistor: source, drain substrate and/or control gate. After each such programming or erase pulse, a verify step is executed to check the threshold voltage V.sub.t of the channel region of the cell. If the programming of the cell is not verified, another pulse is applied; this iteration of applying a programming pulse and verifying continues until a positive verification is returned.
There are at least two drawbacks to this conventional practice. The first is the amount of time it takes to execute a verify step. The other is that if the pulse voltage, which typically is of a predetermined amount, is too high, the cell will be overprogrammed or overerased because of overcharging or overdischarging. Cells storing overcharged or overdischarged bits can cause several kinds of functional and reliability problems, and are to be avoided if at all possible.
An analogy can be drawn from practices concerning the vending of coffee. According to a first method, one simply pours coffee from the pot into the mug while watching the mug; when the mug is nearly full, the person pouring the coffee stops.
According to a second coffee vending method, a coffee vending machine is involved. A button is pushed, and a uniform volumetric delivery of coffee takes place. This is for a coffee mug of a predetermined size.
A third method of obtaining coffee is analogous to present EEPROM programming practice: take an empty cup, close your eyes, pour in a spoonful of coffee, open your eyes, see if the cup is full; if the cup is not yet full, close your eyes again and pour in another spoonful of coffee. Open your eyes again to check if the cup is full and repeat until the cup is full. If the fill-and-check process is repeated too many times, the last spoonful of coffee will cause the coffee mug to overflow. To obviate this problem, a small spoon must be used, but this increases the chances that two or more check-and-fill iterative steps will be needed. If greater speed is desired, the spoon size is increased, but this increases the "overprogramming" problem.
In the above methods of getting coffee, according to the first method one is really "verifying" while at the same time "programming". According to the second method, a verify mode is not necessary because the user knows exactly how much coffee is vended in advance. The third method is not used by anyone for coffee at all; unfortunately, it is still being used for the programming of flash EEPROM memory devices.
Therefore, a need exists for a method and apparatus for programming an electrically programmable memory cell, and particularly an electrically erasable and programmable memory cell, which avoids the dangers of over-and underprogramming.